There are chips produced today that have more than one central processing unit (CPU) embedded on the same chip. These chips may be used in ways that require communication between the CPUs. An example of a situation requiring such communication is the case of a chip being used for communication with a network. Another example may occur in calculations for graphics rendering.
The CPUs on the chip often need to share processing results. This usually requires that the CPUs share data structures in memory. This requires common management of the shared memory. Unfortunately, common memory management adds complexity to the interface between the CPUs. When the CPUs use asynchronous clocks, the complexity of the interface is even greater.